GdkEvent: Add GdkSeat getter and internal setter
authorCarlos Garnacho <carlosg@gnome.org>
Thu, 26 Nov 2015 18:53:09 +0000 (19:53 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Mon, 14 Dec 2015 23:16:15 +0000 (00:16 +0100)
https://bugzilla.gnome.org/show_bug.cgi?id=759309

docs/reference/gdk/gdk3-sections.txt
gdk/gdkevents.c
gdk/gdkevents.h
gdk/gdkinternals.h

index b7f1b09f60ddc2931cd242a9514bfd965c1f4100..bc132a0691ab01c17905734ea42fc070363c6492 100644 (file)
@@ -864,6 +864,7 @@ gdk_events_get_angle
 gdk_events_get_center
 gdk_events_get_distance
 gdk_event_triggers_context_menu
+gdk_event_get_seat
 
 <SUBSECTION>
 gdk_event_handler_set
index ed649130fc5b18b9726b7109cff7cf51f46d085a..a4c743d8a3afef097ea624d9185dabc515449713 100644 (file)
@@ -2314,3 +2314,38 @@ gdk_event_get_event_type (const GdkEvent *event)
 
   return event->type;
 }
+
+/**
+ * gdk_event_get_seat:
+ * @event: a #GdkEvent
+ *
+ * Returns the #GdkSeat this event was generated for.
+ *
+ * Returns: (transfer none): The #GdkSeat of this event
+ *
+ * Since: 3.20
+ **/
+GdkSeat *
+gdk_event_get_seat (const GdkEvent *event)
+{
+  const GdkEventPrivate *priv;
+
+  if (!gdk_event_is_allocated (event))
+    return NULL;
+
+  priv = (const GdkEventPrivate *) event;
+  return priv->seat;
+}
+
+void
+gdk_event_set_seat (GdkEvent *event,
+                    GdkSeat  *seat)
+{
+  GdkEventPrivate *priv;
+
+  if (gdk_event_is_allocated (event))
+    {
+      priv = (GdkEventPrivate *) event;
+      priv->seat = seat;
+    }
+}
index 53bf1678295f4c3cbb9bdc569c35d03aafda0913..ca019b7b9dfdbc072a907481fe8dc8fa7933c616 100644 (file)
@@ -1427,6 +1427,9 @@ GdkEventSequence *gdk_event_get_event_sequence (const GdkEvent *event);
 GDK_AVAILABLE_IN_3_10
 GdkEventType gdk_event_get_event_type   (const GdkEvent *event);
 
+GDK_AVAILABLE_IN_3_20
+GdkSeat  *gdk_event_get_seat            (const GdkEvent *event);
+
 GDK_AVAILABLE_IN_ALL
 void     gdk_set_show_events           (gboolean        show_events);
 GDK_AVAILABLE_IN_ALL
index b75eb3a9fb2f1028a34b55c678d3f7b93bb2e720..c9aa52430dc6c3586b7b9023e05562994575633a 100644 (file)
@@ -185,6 +185,7 @@ struct _GdkEventPrivate
   gpointer   windowing_data;
   GdkDevice *device;
   GdkDevice *source_device;
+  GdkSeat   *seat;
 };
 
 typedef struct _GdkWindowPaint GdkWindowPaint;
@@ -390,6 +391,9 @@ void     _gdk_event_set_pointer_emulated (GdkEvent *event,
                                           gboolean  emulated);
 gboolean _gdk_event_get_pointer_emulated (GdkEvent *event);
 
+void     gdk_event_set_seat              (GdkEvent *event,
+                                          GdkSeat  *seat);
+
 void   _gdk_event_emit               (GdkEvent   *event);
 GList* _gdk_event_queue_find_first   (GdkDisplay *display);
 void   _gdk_event_queue_remove_link  (GdkDisplay *display,